//
//  main.c
//  结构体数组
//
//  Created by ws on 2017/7/25.
//  Copyright © 2017年 王松. All rights reserved.
//

#include <stdio.h>

/**
 结构体数组:数组元素为结构体的数组

 定义结构体数组
 结构类型 数组名称[元素个数];
 数组元素的类型 数组名称[元素个数];
 */
/**
 一般情况下结构体类型都是定义在函数的外部
 */
struct Dog{
    char *name;
    int age;
};
/**
 第一种方式:先定义结构体数组然后初始化
 注意点:结构体如果没有初始化,它里面都是垃圾值
 */
void test(){
    struct Dog dogs[5];
    dogs[0] = (struct Dog){"ww",1};
    dogs[1].age = 2;
    dogs[2].name = "xx";
    
    //遍历结构体数组
    for (int i = 0; i < 5; i++) {
        printf("age = %d ,name = %s\n",dogs[i].age,dogs[i].name);
    }
}
/**
 第二中方式:定义结构体数组的同时进行初始化
 注意点:如果没有显式初始化的结构体，那么这个结构体中所有成员都会被初始化为0
 */
void test1(){
    struct Dog dogs[10] = {{"旺财",1},{"大黄",2},{"来福",3},{"小黑",4},{"小白",5}};
    //  计算数组的元素个数
    int len = sizeof(dogs) / sizeof(struct Dog);
    for(int i = 0;i < len ;i++){
        printf("age = %d,name = %s\n",dogs[i].age,dogs[i].name);
    }
}
int main(int argc, const char * argv[]) {
    test1();
  return 0;
}
